#include"drv_usart.h"
void init_usart()
{
	GPIO_InitTypeDef  GPIO_Struct_init;
	USART_InitTypeDef Insert_Struct_init;
	NVIC_InitTypeDef  NVIC_InitStruct;
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOG,ENABLE);
	RCC_APB2PeriphClockCmd( RCC_APB2Periph_USART6,ENABLE);
	GPIO_Struct_init.GPIO_Pin=GPIO_Pin_9 | GPIO_Pin_14;
	GPIO_Struct_init.GPIO_OType=GPIO_OType_PP;
	GPIO_Struct_init.GPIO_PuPd=GPIO_PuPd_UP;
	GPIO_Struct_init.GPIO_Mode=GPIO_Mode_AF;
	GPIO_Struct_init.GPIO_Speed=GPIO_Speed_50MHz;
	GPIO_Init(GPIOG,&GPIO_Struct_init);
	GPIO_PinAFConfig(GPIOG,GPIO_PinSource9 ,GPIO_AF_USART6);//确定io口的复用功能
	GPIO_PinAFConfig(GPIOG,GPIO_PinSource14,GPIO_AF_USART6);//确定io口的复用功能
	
	Insert_Struct_init.USART_BaudRate=115200;//波特率
	Insert_Struct_init.USART_HardwareFlowControl=USART_HardwareFlowControl_None;//硬键流控制
	Insert_Struct_init.USART_Mode=USART_Mode_Rx| USART_Mode_Tx;//使能
	Insert_Struct_init.USART_Parity=USART_Parity_No;//校验（无）
	Insert_Struct_init.USART_StopBits=USART_StopBits_1;//停止位
	Insert_Struct_init.USART_WordLength=USART_WordLength_8b;//数据位
	USART_Init(USART6,&Insert_Struct_init);//初始化串口

	USART_ITConfig(USART6,  USART_IT_RXNE,ENABLE);
	NVIC_InitStruct.NVIC_IRQChannel=USART6_IRQn;
	NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;
	NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
	NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
	NVIC_Init(&NVIC_InitStruct);
	
	USART_ClearFlag(USART6,USART_FLAG_TC);//清楚传送标志
	USART_Cmd(USART6,ENABLE);//开启串口
}

	int fputc(int ch,FILE*f)//重构fputc
{
	USART_SendData(USART6,ch);
	while(USART_GetFlagStatus(USART6,USART_FLAG_TC)==RESET);//传送未完成时一直在循环
	USART_ClearFlag(USART6,USART_FLAG_TC);//清楚传送标志
	return ch;
}

	